<?php

/*
  分润请求接口API
*/

/*
 *
  allot_data说明：
1.4891234521@qq.com^9.90^F,表示商户账号4891234521@qq.com收款9.90。
2.4891234521@qq.com^9.90^F|12345678@qq.com^remain_amt^F,示商户账号4891234521@qq.com收款9.90，remain_amt放在最后一条明细，表示剩余未分润的金额全部分润给12345678@qq.com。
3.F=商户账号，T=个人账号
4.接口不会自动分润必须传入明细才能分给对应的账户，如果不传分润的明细就不会分润/结算。
5.默认情况下：可分润金额=支付金额-支付手续费。（手续费可咨询商务）例：订单A：支付10元-0.1元手续费=9.9元，9.9元为该订单可分润金额。

*/




//生成随机单号

$number = mt_rand(13021003,999999999);
echo $number;
echo "<br/><hr>";


//获取时间戳
$currentTime = date("YmdHis");



//请求参数
$version ='3';//版本号
$agent_id ='1664502';//商户编号，（汇付宝商户内码：七位整数数字）
$agent_bill_id ='994360938';//支付接口传入的商户订单号
$ref_agent_id = '';//二级商户号
$jnet_bill_no ='H2401169067348AT';//支付成功后，汇付宝返回的单据号
$batch_no =$number;//分润批次号,同一笔单号批次号不能重复
$allot_data ='huifuceshi@126.com^0.01^F^利润';//分润明细：看顶端注释
$timestamp =$currentTime;//时间戳
$key='651886F030134F848F548A12';//md5密钥


$data = "version=$version&agent_id=$agent_id&agent_bill_id=$agent_bill_id&ref_agent_id=$ref_agent_id&batch_no=$batch_no&jnet_bill_no=$jnet_bill_no&allot_data=$allot_data&timestamp=$timestamp&key=$key";
echo '待加密数据'.$data;
echo "<br/><hr>";

$sign = md5($data);
echo '加密后'.$sign;
echo "<br/><hr>";

//汉字需要GBK然后url编码
$GBKData = iconv('UTF-8', 'GBK', $allot_data);
$New_allot_data = urlencode($GBKData);


// 请求参数（使用 & 符号拼接）
$params = "version=$version&agent_id=$agent_id&agent_bill_id=$agent_bill_id&ref_agent_id=$ref_agent_id&batch_no=$batch_no&jnet_bill_no=$jnet_bill_no&allot_data=$New_allot_data&timestamp=$timestamp&sign=$sign";
echo $params;
echo "<br/><hr>";

// 目标URL
$url = 'https://pay.heepay.com/API/Payment/GuaranteeAllotSubmit.aspx';


// 构建请求上下文
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-Type: application/x-www-form-urlencoded',
        'content' => $params
    )
);
$context = stream_context_create($options);

// 发送 POST 请求
$response = file_get_contents($url, false, $context);

if ($response === false) {
    echo 'POST request failed';
} else {
    $responsed=iconv('GBK', 'UTF-8', $response);
    echo $responsed;
}
?>